import { getToken, setToken, removeToken } from '@/utils/auth'
import { getInfo, getUserById } from '@/api/user'
import { resetRouter } from '@/router'
const getDefaultState = () => {
  return {
    token: getToken() || null,
    userInfo: {},
    name: '',
    userInfoById: {}
  }
}
export default {
  namespaced: true,
  state: {
    token: getToken() || null,
    userInfo: {},
    name: '',
    userInfoById: {}
  },
  mutations: {
    token(state, token) {
      state.token = token
      setToken(token)
    },
    delToken() {
      removeToken()
    },
    setInfo(state, info) {
      state.userInfo = info
      state.name = info.username
    },
    setInfoById(state, info) {
      state.userInfoById = info
    },
    resetState: (state) => {
      Object.assign(state, getDefaultState())
    }
  },
  actions: {
    async getUser(context) {
      const res = await getInfo()
      context.commit('setInfo', res.data)
      return res.data
    },
    async getById(context, id) {
      const res = await getUserById(id)
      context.commit('setInfoById', res.data)
      console.log(res.data, 1111)
    },
    logout(context) {
      removeToken()
      context.commit('resetState')
      resetRouter()
    }
  }
}
// import { login, logout, getInfo } from '@/api/user'

// import { resetRouter } from '@/router'

// const getDefaultState = () => {
//   return {
//     token: getToken(),
//     name: '',
//     avatar: ''
//   }
// }

// const state = getDefaultState()

// const mutations = {
//   RESET_STATE: (state) => {
//     Object.assign(state, getDefaultState())
//   },
//   SET_TOKEN: (state, token) => {
//     state.token = token
//   },
//   SET_NAME: (state, name) => {
//     state.name = name
//   },
//   SET_AVATAR: (state, avatar) => {
//     state.avatar = avatar
//   }
// }

// const actions = {
//   // user login
//   login({ commit }, userInfo) {
//     const { mobile, password } = userInfo
//     return new Promise((resolve, reject) => {
//       login({ mobile: mobile.trim(), password: password })
//         .then((response) => {
//           const { data } = response
//           commit('SET_TOKEN', data.token)
//           setToken(data.token)
//           resolve()
//         })
//         .catch((error) => {
//           reject(error)
//         })
//     })
//   },

//   // get user info
//   getInfo({ commit, state }) {
//     return new Promise((resolve, reject) => {
//       getInfo(state.token)
//         .then((response) => {
//           const { data } = response

//           if (!data) {
//             return reject('Verification failed, please Login again.')
//           }

//           const { name, avatar } = data

//           commit('SET_NAME', name)
//           commit('SET_AVATAR', avatar)
//           resolve(data)
//         })
//         .catch((error) => {
//           reject(error)
//         })
//     })
//   },

//   // user logout
//   logout({ commit, state }) {
//     return new Promise((resolve, reject) => {
//       logout(state.token)
//         .then(() => {
//           removeToken() // must remove  token  first
//           resetRouter()
//           commit('RESET_STATE')
//           resolve()
//         })
//         .catch((error) => {
//           reject(error)
//         })
//     })
//   },

// remove token
//   resetToken({ commit }) {
//     return new Promise((resolve) => {
//       removeToken() // must remove  token  first
//       commit('RESET_STATE')
//       resolve()
//     })
//   }
// }

// export default {
//   namespaced: true,
//   state,
//   mutations,
//   actions
// }
